#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <vector>
#include <algorithm>
#include<queue>
using namespace std;

int x[100005][4];
bool u[100005][2];
vector<int> ve;

void dfs(int v, int p)
{
	int id = 0;
	for(int i = 0; i < 4; i++)
		if(x[v][i] == p)
			id = i;
	if(u[v][id % 2])
		return;
	u[v][id % 2] = 1;
	ve.push_back(v);
	if(id == 0)
		dfs(x[v][2], v);
	else if(id == 1)
		dfs(x[v][3], v);
	else if(id == 2)
		dfs(x[v][0], v);
	else
		dfs(x[v][1], v);
}

int main()
{
	int t;
	scanf("%d", &t);
	for(int tt = 0; tt < t; tt++)
	{
		int n, g;
		scanf("%d%d", &n, &g);
		g--;
		for(int i = 0; i < n; i++)
			for(int j = 0 ; j < 4; j++)
				scanf("%d", &x[i][j]), x[i][j]--;

		memset(u, 0, sizeof(u));
		int ans = 0;
		for(int i = 0; i < n; i++)
		{
			for(int j = 0; j < 2; j++)
			{
				if(!u[i][j]) {
					ve.clear();
					dfs(i, x[i][j]);
					bool fo = 0;
					for(int k = 0; k < ve.size(); k++)
						if(ve[k] == g)
							fo = 1;
					if(!fo)
						ans ++;
				}
			}
		}
		printf("%d\n", ans);
	}

	
	return 0;
}